package com.estronger.shopmanage.ui.common;

import android.Manifest;
import android.app.Activity;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;

import com.estronger.shopmanage.R;
import com.estronger.shopmanage.base.BaseActivity;
import com.estronger.shopmanage.utils.Toast;
import com.github.barteksc.pdfviewer.PDFView;
import com.github.barteksc.pdfviewer.listener.OnPageChangeListener;
import com.github.dfqin.grantor.PermissionListener;
import com.soonfor.evaluate.tools.PermissionsCheckUtil;

import java.io.File;

;

/**
 * 打开Pdf文件
 */
public class OpenPdfActivity extends BaseActivity {

    Activity mActivity;
    TextView tvfTitile;
    PDFView pdfView;
    TextView tv_progress;
    TextView tv_pdf_pageno;
    String path;//存储附件的路径
    String fileType;//附件类型

    String title = "";
    String pdfUrl = "";

    @Override
    protected void init() {
        try {
            title = getIntent().getStringExtra("title");
            path = getIntent().getStringExtra("path");
            fileType = getIntent().getStringExtra("fileType");
        }catch (Exception e){}
    }

    // 初始化各个View
    @Override
    protected void initView() {
        setContentView(R.layout.activity_openfile);
        mActivity = OpenPdfActivity.this;
        findView();
    }
    @Override
    protected void initAction() {
    }
//    @Override
//    protected int attachLayoutRes() {
//        return R.layout.activity_openfile;
//    }
//
//    @Override
//    protected void initViews() {
//        mActivity = OpenPdfActivity.this;
//        findView();
//        initData();
//    }

    private void findView() {
        tvfTitile = findViewById(R.id.measure_title);
        pdfView = findViewById(R.id.pdfView);
        tv_progress = findViewById(R.id.tv_progress);
        tv_pdf_pageno = findViewById(R.id.tv_pdf_pageno);
    }
    private void initData(){
        tvfTitile.setText(TextUtils.isEmpty(title) ? "预览" : title);
        if (TextUtils.isEmpty(path)) return;
        if (path.startsWith("http")) {
            //开始下载
            tv_progress.setVisibility(View.VISIBLE);
            downLoadPdf(fileType, title, path);
        }else {
            //本地图片
            tv_progress.setVisibility(View.GONE);
            showPdf(path);
        }
    }
    //下载pdf
    private void downLoadPdf(String fileType, String fileName, String fileUrl){
        showDialog("下载中...", true);
        PermissionsCheckUtil.requestPermission(mActivity, new PermissionListener() {
            @Override
            public void permissionGranted(@NonNull String[] permission) {
//                AsyncUtils.downloadFileFromCrm(mActivity, fileType, fileName, fileUrl, "HomeCase", 1000, new AsyncUtils.AsyncCallback2() {//"单据打印"
//                    @Override
//                    public void success(String type, int requestCode, String data) {
//                        tv_progress.setVisibility(View.GONE);
//                        showPdf(data);
//                    }
//
//                    @Override
//                    public void onProgress(String type, int requestCode, int count) {
//                        tv_progress.setText("正在打开（" +count + "%）");
//                    }
//
//                    @Override
//                    public void fail(String type, int requestCode, int statusCode, String msg) {
//                        closeLoadingDialog();
//                        tv_progress.setText("打开失败");
//                    }
//                });
            }

            @Override
            public void permissionDenied(@NonNull String[] permission) {
                dimssDialog();
                Toast.show(mActivity, "您拒绝了必要权限，无法使用下载功能!", Toast.LENGTH_SHORT);
            }
        }, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE);
    }
    //下载其他文件

    private void showPdf(String storePdfPath) {
        File file = new File(storePdfPath);
        if (file.exists() && file.length() > 0) {
            pdfView.setVisibility(View.VISIBLE);
            //选择pdf
            pdfView.fromFile(file)
//                .pages(0, 2, 3, 4, 5); // 把0 , 2 , 3 , 4 , 5 过滤掉
                    //是否允许翻页，默认是允许翻页
                    .enableSwipe(true)
                    //pdf文档翻页是否是垂直翻页，默认是左右滑动翻页
                    .swipeHorizontal(true)
                    //
                    .enableDoubletap(true)
                    //设置默认显示第0页
                    .defaultPage(0)
                    //允许在当前页面上绘制一些内容，通常在屏幕中间可见。
//                                    .onDraw(onDrawListener)
                    // 允许在每一页上单独绘制一个页面。只调用可见页面
//                                    .onDrawAll(onDrawListener)
                    //设置加载监听
//                                    .onLoad(new OnLoadCompleteListener() {
//                                        @Override
//                                        public void loadComplete(int nbPages) {
//                                            pageTv.setText(nbPages + "");
//                                            pageTv1.setText(myPage +  "/");
//                                        }
//                                    })
                    //设置翻页监听
                    .onPageChange(new OnPageChangeListener() {
                        @Override
                        public void onPageChanged(int page, int pageCount) {
                            tv_pdf_pageno.setText((page+1) + "/" + pageCount);
                        }
                    })
                    //设置页面滑动监听
//                                    .onPageScroll(onPageScrollListener)
//                                    .onError(onErrorListener)
                    // 首次提交文档后调用。
                    // .onRender(onRenderListener)
                    // 渲染风格（就像注释，颜色或表单）
                    .enableAnnotationRendering(false)
//                                    .password(null)
//                                    .scrollHandle(null)
                    // 改善低分辨率屏幕上的渲染
                    .enableAntialiasing(true)
                    // 页面间的间距。定义间距颜色，设置背景视图
                    .spacing(0)
                    .load();
        }else {
            pdfView.setVisibility(View.GONE);
        }
        dimssDialog();
    }
}

